package com.earthea.scaffold.system.entity.request;

import com.earthea.common.annotation.Anonymize;
import com.earthea.common.enumeration.AnonymizeType;
import com.earthea.scaffold.common.enums.GenderEnum;
import com.earthea.scaffold.common.validator.PasswordValidator;
import jakarta.validation.constraints.*;
import lombok.Data;

/**
 * 用户注册对象
 */
@Data
public class RegisterReq {
    /**
     * 用户名
     */
    @NotBlank(message = "用户名不能为空")
    @Size(min = 5, max = 20, message = "用户名长度必须在5到20个字符之间")
    @Pattern(regexp = "^[a-zA-Z0-9_]+$", message = "只能使用字母、数字、下划线")
    private String username;

    /**
     * 手机号
     */
    @NotBlank(message = "手机不能为空")
    @Size(min = 11, max = 20, message = "用户名长度必须在11到20个字符之间")
    private String phone;

    /**
     * 邮箱
     */
    @NotBlank(message = "邮箱不能为空")
    @Email(regexp = "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$", message = "不是一个合法的电子邮件地址")
    private String email;

    /**
     * 用户密码
     */
    @NotBlank(message = "密码不能为空")
    @Size(min = 8, max = 20, message = "密码长度必须在8到20个字符之间")
    @PasswordValidator
    @Anonymize(type = AnonymizeType.PASSWORD)
    private String password;

    @NotNull(message = "性别不能为空")
    private GenderEnum sex;

    /**
     * 验证码
     */
    @Anonymize(type = AnonymizeType.DEFAULT)
    private String code;

    /**
     * 唯一标识
     */
    @Anonymize(type = AnonymizeType.DEFAULT)
    private String uuid;
}
